from . import *
from django.shortcuts import render, redirect, reverse
from django.contrib.auth import models
from django.db.models import Max, Sum, Avg, Count

from user.views import commo

"""
=====================================
初始化服务器数据，权限信息，超级管理员账号
=====================================
"""
# 角1 - 管理员：
# 1: 主数据管理 / 补库计划 - 预约阀值 - 装卸区
# 2: 预约管理 / 预约审批 - 预约查询 - 今日计划
# 3: 车辆管理 /
# 4: 台账管理 / 台账查询 - 统计分析
# 5: 用户管理
# 角2 - 车辆调度员：
# 2: 预约管理 / 预约审批 - 预约查询 - 今日计划
# 3: 车辆管理 /
# 角3 - 小程序


def init_data(request):
    """初始化数据表格"""
    # 一级菜单数据写入 defaults:修改值，id为查询条件
    Menu.objects.update_or_create(
        defaults={'authName': '主数据管理', 'path': 'master_data_manage',
                  'icon_id': '125'}, id=1
    )
    Menu.objects.update_or_create(
        defaults={'authName': '预约管理', 'path': 'appointment_manage',
                  'icon_id': '125'}, id=2
    )
    Menu.objects.update_or_create(
        defaults={'authName': '车辆管理', 'path': 'vehicle_manage',
                  'icon_id': '125'}, id=3
    )
    Menu.objects.update_or_create(
        defaults={'authName': '台账管理', 'path': 'ledger_manage',
                  'icon_id': '125'}, id=4
    )
    Menu.objects.update_or_create(
        defaults={'authName': '用户管理', 'path': 'user_manage',
                  'icon_id': '125'}, id=5
    )
    #  二级菜单数据写入
    menu1 = Menu.objects.get(pk=1).id
    menu2 = Menu.objects.get(pk=2).id
    menu3 = Menu.objects.get(pk=3).id
    menu4 = Menu.objects.get(pk=4).id
    menu5 = Menu.objects.get(pk=5).id
    ChildMenu.objects.update_or_create(
        defaults={'authName': '补库计划管理', 'menu_id': 1,
                  'path': 'inventory/planning', 'icon_id': '1'}, id=1
    )
    ChildMenu.objects.update_or_create(
        defaults={'authName': '预约阀值管理', 'menu_id': 1,
                  'path': 'inventory/planning', 'icon_id': '1'}, id=2
    )
    ChildMenu.objects.update_or_create(
        defaults={'authName': '装卸区管理', 'menu_id': 1,
                  'path': 'inventory/planning', 'icon_id': '1'}, id=3
    )
    ChildMenu.objects.update_or_create(
        defaults={'authName': '预约审批', 'menu_id': 2,
                  'path': 'inventory/planning', 'icon_id': '1'}, id=4
    )
    ChildMenu.objects.update_or_create(
        defaults={'authName': '预约查询', 'menu_id': 2,
                  'path': 'inventory/planning', 'icon_id': '1'}, id=5
    )
    ChildMenu.objects.update_or_create(
        defaults={'authName': '今日计划', 'menu_id': 2,
                  'path': 'inventory/planning', 'icon_id': '1'}, id=6
    )
    ChildMenu.objects.update_or_create(
        defaults={'authName': '车辆管理', 'menu_id': 3,
                  'path': 'inventory/planning', 'icon_id': '1'}, id=7
    )
    ChildMenu.objects.update_or_create(
        defaults={'authName': '台账查询', 'menu_id': 4,
                  'path': 'inventory/planning', 'icon_id': '1'}, id=8
    )
    ChildMenu.objects.update_or_create(
        defaults={'authName': '统计分析', 'menu_id': 4,
                  'path': 'inventory/planning', 'icon_id': '1'}, id=9
    )
    ChildMenu.objects.update_or_create(
        defaults={'authName': '用户管理', 'menu_id': 5,
                  'path': 'inventory/planning', 'icon_id': '1'}, id=10
    )
    """
    # 一级二级关联数据写入
    menu1 = Menu.objects.get(authName="验收管理")
    # menu2 = Menu.objects.get(authName="单据管理")
    menu3 = Menu.objects.get(authName="系统管理")
    # 二级菜单
    cmenu1 = ChildMenu.objects.get(authName="验收执行").id
    cmenu2 = ChildMenu.objects.get(authName="验收记录").id
    cmenu3 = ChildMenu.objects.get(authName="单据录入").id
    # cmenu4 = ChildMenu.objects.get(authName="单据查询").id
    cmenu5 = ChildMenu.objects.get(authName="用户管理").id
    cmenu6 = ChildMenu.objects.get(authName="印章管理").id
    cmenu7 = ChildMenu.objects.get(authName="系统设置").id
    """
    # 初始化admin用户：
    User.objects.update_or_create(
        defaults={'status': 1, 'group': 1,
                  'password': tokens.set_bcrypt_password('000000'),
                  'real_name': '超级管理员'},
        user_name='Admin'
    )
    admin = User.objects.filter(user_name='Admin').first()
    # 初始化admin全部权限
    commo.user_set_menu_data(admin, admin.group)
    return restful.ok(message='初始化成功')


def init_data3(request):
    filters = {'status__in': [1, 2]}
    excel_data = data_search.orm_data_search(
        request, User, **filters)
    for i in excel_data:
        i['group'] = User.GROUP(i['group']).name
        i['status'] = User.STATUS(i['status']).name
    return restful.ok(message='ok', data=excel_data)
